package config

import (
	"fmt"

	"github.com/spf13/viper"
)

func init() {
	viper.SetConfigName("config") // 配置文件的名称（没有扩展名）
	viper.SetConfigType("yaml")
	viper.AddConfigPath("./config") // 配置文件的路径
	err := viper.ReadInConfig()
	if err != nil { // 处理读取配置文件的错误
		panic(fmt.Errorf("Fatal error config file: %s \n", err))
	}
}

func Mysql() MysqlConfig {
	config := new(MysqlConfig)
	config.Addr = viper.GetString("mysql.addr")
	config.Database = viper.GetString("mysql.database")
	config.UserName = viper.GetString("mysql.username")
	config.Password = viper.GetString("mysql.password")
	return *config
}

func (m MysqlConfig) String() string {
	return fmt.Sprintf("%s:%s@tcp(%s)/%s?charset=utf8mb4&parseTime=True", m.UserName, m.Password, m.Addr, m.Database)
}

func Redis() RedisConfig {
	config := new(RedisConfig)
	config.Addr = viper.GetString("redis.addr")
	config.Password = viper.GetString("redis.password")
	return *config
}
